home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d13 / ptv2n1.arc / FIND_TSR.C < prev    next >
Text File  |  1991-03-26  |  896b  |  28 lines

  1. #include <string.h>
  2. #include <dos.h>
  3.  
  4. static char signature[] = "This is my signature.";
  5.  
  6. unsigned find_tsr_psp(void)
  7. {
  8. char i, ch, sig_size;
  9. unsigned  mcb, owner, size, sig_addr, psp_addr = 0;
  10.  
  11.   sig_addr = 16 * (_DS - _CS) + 256 + (unsigned) &signature;
  12.   sig_size = strlen(signature);  
  13.   mcb = getmcb1();
  14.   do {
  15.     ch = peekb(mcb, 0);
  16.     owner = peek(mcb, 1);
  17.     size = peek(mcb, 3);
  18.     if (mcb == owner-1) {              /* examine only psp blocks */
  19.       for(i=0; i<sig_size; i++) {
  20.         if (peekb(owner, sig_addr+i) != signature[i]) break;
  21.         if (i == sig_size-1) psp_addr = owner;    /* if last char */
  22.       }
  23.     }
  24.     mcb += (size + 1);
  25.   } while (ch == 'M' && !psp_addr);
  26.   return(psp_addr != _psp ? psp_addr : 0);
  27. }
  28.